package Others.DesignPattern.FactoryPattern.Original;

import Others.DesignPattern.FactoryPattern.Original.Object1.LeiFeng;
import Others.DesignPattern.FactoryPattern.Original.Object1.LeiFengSimpleFactory;
import cn.hutool.core.bean.BeanUtil;

public class main1 {
    public static void main(String[] args) {

        //但是由于老人不需要知道究竟是谁来帮助了他，只需要知道是学雷锋的大学生或者志愿者来帮助他的即可
        //所以这里使用到了简单工厂模式

        LeiFeng UndergraduateA = LeiFengSimpleFactory.createLeiFeng("大学生");

        if (UndergraduateA != null)
            UndergraduateA.Wash();
        LeiFeng UndergraduateB = LeiFengSimpleFactory.createLeiFeng("大学生");
        if (UndergraduateB != null)
            UndergraduateB.Sweep();
        LeiFeng UndergraduateC = LeiFengSimpleFactory.createLeiFeng("大学生");
        if (UndergraduateC != null)
            UndergraduateC.BuyRice();

        //这里可以看见，通过这种方式（简单工厂）老人就不再和具体的人相认识了，而是根据对应的type来决定来的人是大学生还是志愿者

        LeiFeng VolunteerA = LeiFengSimpleFactory.createLeiFeng("志愿者");
        if (VolunteerA != null)
            VolunteerA.Wash();
        LeiFeng VolunteerB = LeiFengSimpleFactory.createLeiFeng("志愿者");
        if (VolunteerB != null)
            VolunteerB.Sweep();
        LeiFeng VolunteerC = LeiFengSimpleFactory.createLeiFeng("志愿者");
        if (VolunteerC != null)
            VolunteerC.BuyRice();

        //你会发现，当每常见一个对象时都要调用一次简单工厂，而如果要增加或者修改某一个对象内容，也是极为不便的
        //简单工厂相当于--既符合了增加开放，也符合了修改开放--不符合开闭原则

    }
}
